import { axiosInstance } from 'src/boot/axios'
import CommonConfig from 'src/assets/js/config'

const fileUrl = CommonConfig.fileUrl + '/v1'
const machinestatusUrl = CommonConfig.machinestatusUrl + '/v1'
const schemaUrl = CommonConfig.schemaUrl + '/v1'

/**
 * 获取云端文件列表
 * path 文件路径
 * **/
export function getMachineTree () {
  const newUrl = schemaUrl + '/scheme_tree5_device'

  return axiosInstance.get(newUrl).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 获取盒子内部和外部存储信息
 * boxId 盒子id
 * requestId 前端自己生成的唯一标识
 * **/
export function getStoreInfo (params) {
  const newUrl = fileUrl + '/store_info'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 获取盒子内部和外部存储文件列表信息
 * about 获取的是内部还是外部文件列表 cnc内部 box外部
 * path 路径
 * boxId 盒子id
 * requestId 前端自己生成的唯一标识
 * **/
export function getFileInfo (params) {
  const newUrl = fileUrl + '/file_info'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 请求新建外部存储文件夹
 * path 文件夹路径
 * boxId 盒子id
 * requestId 前端自己生成的唯一标识
 * **/
export function newCncDir (params) {
  const newUrl = fileUrl + '/cnc_file_mkdir'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 请求新建内部存储文件夹
 * path 文件夹路径
 * boxId 盒子id
 * requestId 前端自己生成的唯一标识
 * **/
export function newBoxDir (params) {
  const newUrl = fileUrl + '/box_file_mkdir'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 请求删除外部存储cnc文件和文件夹
 * path 文件夹路径
 * boxId 盒子id
 * requestId 前端自己生成的唯一标识
 * **/
export function delCncfile (params) {
  const newUrl = fileUrl + '/cnc_file_del'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 请求删除内部存储box文件和文件夹
 * path 文件夹路径
 * boxId 盒子id
 * requestId 前端自己生成的唯一标识
 * **/
export function delBoxfile (params) {
  const newUrl = fileUrl + '/box_file_del'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 请求外部存储重命名文件和文件夹
 * newPath 新路径
 * oldPath 旧路径
 * boxId 盒子id
 * requestId 前端自己生成的唯一标识
 * **/
export function renameCncfile (params) {
  const newUrl = fileUrl + '/cnc_file_rename'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 请求内部存储重命名文件和文件夹
 * newPath 新路径
 * oldPath 旧路径
 * boxId 盒子id
 * requestId 前端自己生成的唯一标识
 * **/
export function renameBoxfile (params) {
  const newUrl = fileUrl + '/box_file_rename'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 本地到盒子的文件上传
 * boxId 盒子ID
 * file 文件
 * fileName 文件名
 * storagePath 目标路径
 * toCnc 0：内部(box)，1：外部(cnc)
 * **/
export function fileLocalMachine (params) {
  const newUrl = machinestatusUrl + '/sent_to_box'

  return axiosInstance.post(newUrl, params).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 本地到盒子的文件下载
 * boxId 盒子ID
 * cloudPath 云端地址，不传默认下载到本地
 * file 文件
 * fileName 文件名
 * filePath 文件全路径
 * fromBox 0：内部(cnc)，1：外部(box)
 * **/
export function fileMachineLocal (params) {
  const newUrl = machinestatusUrl + '/get_from_box'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 云端到盒子的文件下载
 * boxId 盒子ID
 * cloudPath 云端地址，不传默认下载到本地
 * storagePath 目标路径
 * toCnc 0：内部(box)，1：外部(cnc)
 * **/
export function fileMachineCloud (params) {
  const newUrl = machinestatusUrl + '/get_from_cloud'

  return axiosInstance.post(newUrl, params).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 盒子的新建文件
 * boxId 盒子ID
 * content 文件内容
 * fileName 文件名称
 * storagePath 上传路径
 * toCnc 0：内部(box)，1：外部(cnc)
 * **/
export function machineNewFile (params) {
  const newUrl = machinestatusUrl + '/create_box_file'

  return axiosInstance.post(newUrl, params).then((res) => {
    return Promise.resolve(res)
  })
}

/**
 * 内部存储文件移动到外部存储
 * boxId 盒子ID
 * cncPath 文件内容
 * requestId 文件名称
 * **/
export function cncToBox (params) {
  const newUrl = fileUrl + '/cnc_to_box'

  return axiosInstance.get(newUrl, { params }).then((res) => {
    return Promise.resolve(res)
  })
}
